// pages/questionnaire/questionnaire.js
const utils = require('../../utils/common.js');
const CHARTS = require('../../utils/wxcharts-min.js');
const app = getApp();
Page({
	data: {
		sid: 0,
		qnTip: '题库加载中...',
		// dataList     : {},    //题目列表，这里要隐藏掉，否则空对象也是true
		dataQn       : {},    //问卷信息
		pageType     : 1,     //标记当前页面的状态，1是显示问题内容，0是提交数据之后，显示结果内容
		nextSid      : 0,     //用于判断显示高级问卷按钮的参数跳转
		nextPrice: 0,     //高级问卷的价格
		pieData:[],
		pieDataColor_: utils.chartsColorMpa
	},
	onLoad: function (options) {
		let that = this
		// 用于开发时，直接进入本页没有带sid参数的报错，但实际使用中是会带参数进来的
		Object.keys(options).length >0 && this.setData({ sid: options.sid }) 
		// 请求题库
		this.loadQuestionNaire();
	},


	/////////////////////////////////////////////// 问卷相关 ///////////////////////////////////////////
	/////////////////////////////////////////////// 问卷相关 ///////////////////////////////////////////
	/////////////////////////////////////////////// 问卷相关 ///////////////////////////////////////////

	//加载题目列表
	loadQuestionNaire() { 
		wx.showLoading({ title: '正在加载中',mask:true})
		wx.request({
			url   : `${app.globalData.server_request_baseUrl}/qn_questionList.php`,
			method: "GET",
			data  : { sid: this.data.sid },
			header: { 'Content-Type': 'application/json' },
			success: res => {
				wx.hideLoading()
				if(res.data.code==0){
					this.setData({
						pageType     : 1,        // 状态改为显示结果
						nextSid      : 0,       // 对应的高级题库id
						nextPrice    : 0,     // 对应的高级题库的价格
						dataQn: res.data.dataQn,
						dataList: res.data.dataList,
					})
					if (!res.data.dataList) { 
						this.setData({
							qnTip:'题库是空的'
						})
					}
				}else{
					wx.showToast({ title: res.data.msg, icon: 'none' });
				}
			}
		})
	},
	// 提交问卷
	formSubmit(e) {
		// console.log('form发生了submit事件，携带数据为：', myAnswerData)
		let that  = this
		let myAnswerData = e.detail.value

		//验证是否全部填写，有没有填写的字段 ，就会返回true
		let iswrite = Object.keys(myAnswerData).some(key=>!myAnswerData[key]); 
		if (iswrite) { utils.showMsg('没有全部选择');return }

		//把问卷的信息顺便提交到后台，省得后台再处理一次
		
		let submitData  = Object.assign(
			this.data.dataQn,
			{service_area :app.globalData.service_area},
			{unionid:wx.getStorageSync('unionid')},
			{openid:wx.getStorageSync('openid')},
			{submitData:JSON.stringify(myAnswerData).replace(/["{}]/gi,'')}
		);
		
		// console.log('这是要提交的数据：',submitData);
		// 提交数据
		wx.showLoading({title:'评分中...',mask:true})
		wx.request({
			url   : `${app.globalData.server_request_baseUrl}qn_submit.php`,
			method: "POST",
			data  : submitData,
			header: {'content-type': 'application/x-www-form-urlencoded'},
			success: res => {
				console.log("返回的问卷结果数据：",res.data.result)
				if(!res.data.result){
					wx.hideLoading()
					utils.showMsg('发生错误了。。。')
					throw new Error('没有返回结果！这是怎么回事？？') 
					return
				}
				// 组织评级文字数组
				let computeArray = [];
				for(let key in res.data.result){
					computeArray.push([
						res.data.result[key].name,
						res.data.result[key].level
					])
				}
				
				// 遍历每个组的得分信息，组织图表数据
				let pieDataArray = [] //用于生成图表数据的数组
				let i = 0;
				for (let key in res.data.result) {
					let o = res.data.result[key]
					// 推进数组
					pieDataArray.push({ name: o.name, data: o.score, color: this.data.pieDataColor_[i][0] });
					pieDataArray.push({ name: o.name + '空缺', data: o.score_full - o.score, color: this.data.pieDataColor_[i][1] })
					i++
				}
				console.log("生成的图表数据：",pieDataArray);
				// that.setData({ pieData:pieDataArray })
				
				// 设置数据
				setTimeout(() => {
					that.setData({
						pageType : 0,                    // 状态改为显示结果
						dataList : [],                   // 清空问题列表
						dataQn   : {},                   // 清空问卷信息
						nextSid  : res.data.nextSid,     // 对应的高级题库id
						nextPrice: res.data.nextPrice,   // 对应的高级题库的价格
						result   : res.data.result,      // 整个问卷结果
						qnNo     : res.data.qnNo,        // 问卷编号 ，用于跳转到问卷报告
						computed : computeArray          // 计算后的用于显示的结果 
					}, () => { 
						wx.pageScrollTo({
							scrollTop: 0,
							duration: 500
						})
						this.__chartsPie(pieDataArray); //加载图表
					})
					utils.showMsg('体检计算完成！')
					wx.hideLoading()
				}, 1000);

				wx.hideLoading()
			}
		})
	},
	//跳转到高级问卷
	paytoAdv(event){
		let sid = event.currentTarget.dataset.advsid
		console.log('要跳往高级题库的id', sid)
		//这里处理支付

		//切换高级题库
		this.setData({
			sid: sid
		}, () => { 
			console.log('支付成功，读取了高级题库')
			this.loadQuestionNaire()
		})
	},
	// 重新填写
	formReset() { console.log('form发生了reset事件') },
	
	/////////////////////////////////////////////// 支付相关 ///////////////////////////////////////////
	/////////////////////////////////////////////// 支付相关 ///////////////////////////////////////////
	/////////////////////////////////////////////// 支付相关 ///////////////////////////////////////////
	/*
	getPrePayId: function (e) {
		// 发送请求
		wx.request({
			url   : `${app.globalData.server_Url}pay.php`,
			header: {'Content-Type': 'application/x-www-form-urlencoded'},
			method: 'POST',
			data:{
				openid:wx.getStorageSync('openid'),
				fee: e.currentTarget.dataset.price
			},
			success : res => { this.pay(res.data) },
			fail: function (res) { console.log('请求自己的服务器失败',res.data) }
		});
	},
	pay: function (data) {
		data.success = function (res) {
			console.log('success');
			wx.showToast({ title: '支付成功', icon: 'success', duration: 3000 });
		}
		data.fail = function (res) { console.log('为什么？支付失败了。。。。'); }
		wx.requestPayment(data)
	},
	*/
	/////////////////////////////////////////////// 其它 事件 ///////////////////////////////////////////
	/////////////////////////////////////////////// 其它 事件 ///////////////////////////////////////////
	/////////////////////////////////////////////// 其它 事件 ///////////////////////////////////////////
	// 图表
	__chartsPie(seriesData) {
		//如果没有参数就执行图表，会靠成小程序没有响应，小程序真恶心
		if (seriesData) {
			new CHARTS({
				animation: true, //是否有动画
				canvasId: 'lineCanvas',
				type: 'pie',
				title: {
					name:"评分报告"
				},
				series: seriesData,
				width: 360,
				height: 400,
				dataLabel: true,
				disablePieStroke: true//不绘制饼图（圆环图）各区块的白色分割线
			 })
		}
	},
	// 分享
	onShareAppMessage: function (res) {
		return {
			title: '分享法管小程序',
			path: '/pages/intro/intro',
			imageUrl: `${app.globalData.server_Url}/weapp_res/share.png`,  //用户分享出去的自定义图片大小为5:4,
			success: function (res) {
			// 转发成功
				wx.showToast({
					title: "分享成功",
					icon: 'success',
					duration: 2000
				})
			},
			fail: function (res) { },
		}
	},
	//弹窗消息显示
	myShowModel: function (msg) {
		wx.showModal({
			title: '提示',
			showCancel: false,
			content: msg,
		})
	},
	// 查看问卷报告
	__showQnReport(){
		wx.navigateTo({
			url:"/pages/questionnaireReport/questionnaireReport?qnNo=" + this.data.qnNo
		})
	}
})